import axios from 'axios'
import {
	createUniAppAxiosAdapter
} from '@uni-helper/axios-adapter'
import {
	useUserStore
} from '@/stores/index.js'

const UserStore = useUserStore()

const baseURL = 'https://www.u2051641.nyat.app:64347'

const instance = axios.create({
	baseURL: baseURL,
	timeout: 10000,
	adapter: createUniAppAxiosAdapter() //指定适配器
})

// 添加请求拦截器
instance.interceptors.request.use((config) => {
	// 发送请求之前携带token
	if (UserStore.UserInfoList.token) {
		config.headers.Authorization = `Bearer ${UserStore.UserInfoList.token}`
	}
	return config
}, (error) => {
	// 对请求错误做些什么
	return Promise.reject(error)
});

// 添加响应拦截器
instance.interceptors.response.use((response) => {
	// 2xx 范围内的状态码都会触发该函数。
	// 对响应数据做点什么
	return response.data
}, (error) => {
	// 超出 2xx 范围的状态码都会触发该函数。
	// 对响应错误做点什么
	const errorMessage = error?.response?.data?.message || error?.response?.data?.error || '发生了未知错误'
	uni.showToast({
		icon: 'error',
		title: errorMessage,
		duration: 3000
	})

	// 对401token错误进行处理
	if (error && error.status === 401) {
		UserStore.clearUserInfoList()
		uni.navigateTo({
			url: '/UserCenterPackage/Login/Login'
		})
	}

	// 对403账号封禁错误进行处理
	if (error && error.status === 403) {
		UserStore.clearUserInfoList()
		uni.navigateTo({
			url: '/UserCenterPackage/Login/Login'
		})
	}

	return Promise.reject(error)
});

export default instance